import os
import shutil
import time
import re

# 将文本文件按行转换为数组
def readtxt(path):
    with open(path) as f:
        txt = [i.strip() for i in f]
        print(txt)
        return txt


# 复制文件夹下指定文件并删除源文件夹内文件
# path_1:文件路径
# path_2:复制文件路径
# path_3:文本文件路径
def copyflie(path_1, path_2, path_3):
    # 读取文件夹里所有的文件名称
    for root, dirs, files in os.walk(path_1):
        # root 表示当前正在访问的文件夹路径
        # dirs 表示该文件夹下的子目录名list
        # files 表示该文件夹下的文件list
        # 读取需要操作的文件名称
        for i in readtxt(path_3):
            for file in files:
                if file.count(i) == 1:
                    shutil.copy(os.path.join(root, file), path_2)  # 复制图片到新文件夹
                    print('文件{}复制成功'.format(file))
                    os.remove(os.path.join(root, file))  # 删除源文件夹里的图像
                    print('文件{}删除成功'.format(file))


# 获取文件夹内所有文件
def getFlist(path):
    for root, dirs, files in os.walk(path):
        # print('当前路径:', root)  #当前路径
        # print('子文件夹:', dirs)   #子文件夹
        # print('文件名称:', files)     #文件名称，返回list类型
        return files


print(getFlist('G:\\test'))


# 对比文件夹内文件是否一致
def file_equal(path_1, path_2):
    f1 = getFlist(path_1)
    f1.sort(key=lambda x: int(re.findall(r'[0-9]+', x)[0]))
    f2 = getFlist(path_2)
    f2.sort(key=lambda x: int(re.findall(r'[0-9]+', x)[0]))
    for i in range(len(f1)):
        if f1[i][:-4] != f2[i][:-4]:
            print('第{}个标签出现问题，名称为{}'.format(i + 1, f1[i]))


# copyflie('G:\\all_pic', 'G:\\all_del', 'G:\Hdata\\去除记录.txt')
print('剪切完成')
time.sleep(5)
file_equal('G:\\all_pic', 'G:\\all_text')
